# AC_CHECK_FRAMEWORK(FRAMEWORK, PROLOGUE, BODY,
#              [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
#              [OTHER-LIBRARIES])
# ------------------------------------------------------
#
# Use a cache variable name containing both the framework and function name,
# because the test really is for framework $1 defining function $2, not
# just for framework $1.  Separate tests with the same $1 and different $2s
# may have different results.
#
# Note that using directly AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])
# is asking for troubles, since AC_CHECK_FRAMEWORK($framework, fun) would give
# ac_cv_framework_$framework_fun, which is definitely not what was meant.  Hence
# the AS_LITERAL_IF indirection.
#
# FIXME: This macro is extremely suspicious.  It DEFINEs unconditionally,
# whatever the FUNCTION, in addition to not being a *S macro.  Note
# that the cache does depend upon the function we are looking for.
#
# It is on purpose we used `ac_check_framework_save_LIBS' and not just
# `ac_save_LIBS': there are many macros which don't want to see `LIBS'
# changed but still want to use AC_CHECK_FRAMEWORK, so they save `LIBS'.
# And ``ac_save_LIBS' is too tempting a name, so let's leave them some
# freedom.
AC_DEFUN([AC_CHECK_FRAMEWORK], [
	m4_ifval([$4], , [AH_CHECK_FRAMEWORK([$1])])dnl
	AS_LITERAL_IF([$1], [AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])],
		[AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1''])]
	)dnl
	AC_CACHE_CHECK([for framework $1], ac_Framework, [
		ac_check_framework_save_LIBS=$LIBS
		LIBS="-framework $1 $6 $LIBS"
		AC_LINK_IFELSE([AC_LANG_PROGRAM([$2], [$3])],[
			AS_VAR_SET(ac_Framework, yes)
		], [AS_VAR_SET(ac_Framework, no)])
		LIBS=$ac_check_framework_save_LIBS]
	)
	AS_IF([test AS_VAR_GET(ac_Framework) = yes], [
		AC_LIB_APPENDTOVAR([LIBS], ["-framework $1"])
		m4_default([$4], [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_FRAMEWORK_$1))])
	], [$5])dnl
	AS_VAR_POPDEF([ac_Framework])dnl
])# AC_CHECK_FRAMEWORK

# AH_CHECK_FRAMEWORK(FRAMEWORK)
# ---------------------
m4_define([AH_CHECK_FRAMEWORK], [
	AH_TEMPLATE(AS_TR_CPP(HAVE_FRAMEWORK_$1),
	[Define to 1 if you have the `]$1[' framework (-framework ]$1[).]
)])
